NPCCTF 2025 randomXor
简单伪随机
打开看了下main,看起来是很简单的伪随机,但是随机数算法是出题人自制的,而且是arm架构题目,不能用frida hook,所以考虑用模拟执行获取rand的结果


我们在调用srand的代码块进入,然后随便找一个加密完的位置作为结束的位置
因为bn有非常方便的读取段数据的api,所以直接把所有段都读进去
1 | from unicorn import * |

0xbc8执行的了xor操作,我们在这个位置设置hook,读取w0就能直接拿到随机数
之后直接解密即可
1 | rd = [171, 171, 131, 225, 65, 75, 141, 216, 149, 238, 40, 235, 196, 132, 99, 176, 132, 203, 140, 159, 82, 45, 47, 112, 202, 233, 239, 208, 231, 132, 45, 46, 58, 242, 229, 224, 106, 121, 228, 112, 174, 107, 227, 40, 64, 239, 178, 108, 13, 68, 255, 143, 243, 74, 108, 95, 141, 203, 193, 122, 195, 218, |
flag{R4ndom_rand0m_happy_Funnny_R4ndom_1s_r3ally_funNy!!_hhh233HHH_this_1s_just_a_pi3ce_of_sh1t_fffkkkkkk_f4ck_jjjjKKKKKjjjjasd}
NPCCTF 2025 randomXor
https://sgsgsama.github.io/ctf/WP/NPCCTF2025/NPCCTF 2025 randomXor/